package com.ktgj.train.service;

import java.util.List;

import com.ktgj.train.domain.InterfaceEntity.TrRetreatTicketRequest;
import com.ktgj.train.domain.InterfaceEntity.TrRetreatTicketResponse;
import com.ktgj.train.domain.TrainCRMOrder;
import com.ktgj.train.domain.TrainOrderRefundrecord;
import com.ktgj.train.domain.TrainChangeOrderVO;

import javax.servlet.http.HttpServletRequest;

/**
 * 退票记录Service接口
 * 
 * @author ruoyi
 * @date 2021-11-29
 */
public interface ITrainOrderRefundrecordService 
{
    /**
     * 查询退票记录
     * 
     * @param recordid 退票记录ID
     * @return 退票记录
     */
    public TrainOrderRefundrecord selectTrainOrderRefundrecordById(Long recordid);

    /**
     * 查询退票记录(merchantOrderId)
     *
     * @param merchantOrderId 商户订单号
     * @return 退票记录
     */
    public List<TrainOrderRefundrecord> queryTrainOrderRefundrecord(String merchantOrderId);

    /**
     * 查询退票记录列表
     * 
     * @param trainOrderRefundrecord 退票记录
     * @return 退票记录集合
     */
    public List<TrainOrderRefundrecord> selectTrainOrderRefundrecordList(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 查询退票记录列表
     *
     * @param orderId 退票记录
     * @return 退票记录集合
     */
    public List<TrainOrderRefundrecord> queryTrainOrderRefundrecordList(Long orderId, String changeType);

    /**
     * 新增退票记录
     * 
     * @param trainOrderRefundrecord 退票记录
     * @return 结果
     */
    public int insertTrainOrderRefundrecord(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 修改退票记录
     * 
     * @param trainOrderRefundrecord 退票记录
     * @return 结果
     */
    public int updateTrainOrderRefundrecord(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 修改退票记录（子订单编号）
     *
     * @param trainOrderRefundrecord 退票记录
     * @return 结果
     */
    public int updateByOrderItemId(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 修改退票记录（订单编号）
     *
     * @param trainOrderRefundrecord 退票记录
     * @return 结果
     */
    public int updateByOrderId(TrainOrderRefundrecord trainOrderRefundrecord);

    /**
     * 批量删除退票记录
     * 
     * @param recordids 需要删除的退票记录ID
     * @return 结果
     */
    public int deleteTrainOrderRefundrecordByIds(Long[] recordids);

    /**
     * 删除退票记录信息
     * 
     * @param recordid 退票记录ID
     * @return 结果
     */
    public int deleteTrainOrderRefundrecordById(Long recordid);

    /**
     * 查询改签记录列表
     * @param order
     * @return
     */
    public List<TrainChangeOrderVO> queryTrainChangeOrderList(TrainCRMOrder order);

    /**
     * 改签详情
     * @param orderId
     * @return
     */
    public List<TrainChangeOrderVO> queryTrainChangeOrder(String orderId);

    /**
     * 改签订单退票
     * @param request
     * @return
     */
    public TrRetreatTicketResponse retreatTicket(HttpServletRequest servletRequest, TrRetreatTicketRequest request) throws Exception;
}
